A fundamental design principle of modern database theory is that updates to database tables are not dated and they overwrite previous data, erasing previous entries.
Relational database design theory is based on the principle of breaking down data into its most elemental parts and storing these in many tables. Thus, for example, the data used in an order entry system may be spread over many tables, and a transaction in such a system, as might result from the processing of a new order, will typically require updating many rows in many tables. On-Line Transaction Processing (OLTP) systems attempt to encapsulate these multi-record updates as “transactions”, but they are not always able to do so. In a multi-user environment, multiple users or processes may compete for access to the same rows in the same tables, resulting in deadlocks and rollbacks that prevent the database from processing all updates and in a timely and responsive fashion.